/* eslint-disable @typescript-eslint/no-unused-vars */
/*
 * Copyright (c) 2018 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
import { AbstractClient } from "../../../common/abstract_client"
import { ClientConfig } from "../../../common/interface"
import {
  UpdateAuthorizationPolicyPriorityResponse,
  MQTTClientSubscription,
  ModifyDeviceIdentityResponse,
  DeleteUserRequest,
  ModifyJWTAuthenticatorResponse,
  CaCertificateItem,
  MessageEnrichmentRulePriority,
  ModifyAuthorizationPolicyResponse,
  ActivateDeviceCertificateRequest,
  CreateInstanceResponse,
  ApplyRegistrationCodeRequest,
  MessageEnrichmentRuleItem,
  DescribeMessageListRequest,
  DeleteDeviceIdentityRequest,
  ModifyJWTAuthenticatorRequest,
  AuthorizationPolicyPriority,
  DescribeInsPublicEndpointsResponse,
  DescribeSharedSubscriptionLagResponse,
  DeleteTopicRequest,
  ModifyUserResponse,
  DescribeCaCertificateResponse,
  DescribeDeviceCertificatesRequest,
  DeleteAuthenticatorRequest,
  DeleteMessageEnrichmentRuleRequest,
  PublicAccessRule,
  VpcInfo,
  DeleteAuthorizationPolicyResponse,
  ProductSkuItem,
  ModifyJWKSAuthenticatorRequest,
  DescribeDeviceIdentitiesRequest,
  CreateMessageEnrichmentRuleResponse,
  RegisterCaCertificateResponse,
  UserProperty,
  KickOutClientResponse,
  DescribeMessageDetailsRequest,
  DeleteInstanceRequest,
  ModifyInstanceRequest,
  CreateDeviceIdentityRequest,
  RegisterDeviceCertificateResponse,
  MQTTAuthenticatorItem,
  DescribeClientListResponse,
  Tag,
  DescribeMessageListResponse,
  HeaderItem,
  MQTTInstanceItem,
  DescribeInstanceListResponse,
  ApplyRegistrationCodeResponse,
  ModifyMessageEnrichmentRuleRequest,
  ModifyInstanceResponse,
  AddClientSubscriptionRequest,
  CreateHttpAuthenticatorResponse,
  MQTTMessage,
  MQTTMessageItem,
  UpdateMessageEnrichmentRulePriorityResponse,
  ModifyJWKSAuthenticatorResponse,
  DeleteDeviceIdentityResponse,
  CreateInsPublicEndpointResponse,
  CreateUserResponse,
  CreateAuthorizationPolicyRequest,
  PublishMessageResponse,
  DescribeMessageEnrichmentRulesResponse,
  DescribeAuthenticatorResponse,
  DeactivateCaCertificateResponse,
  DeleteCaCertificateRequest,
  DeleteDeviceCertificateRequest,
  DescribeMessageByTopicRequest,
  DescribeUserListRequest,
  DeleteUserResponse,
  ActivateCaCertificateResponse,
  DeleteDeviceCertificateResponse,
  DescribeMessageByTopicResponse,
  DeleteInstanceResponse,
  DescribeProductSKUListResponse,
  CreateJWKSAuthenticatorRequest,
  DescribeTopicResponse,
  CreateJWKSAuthenticatorResponse,
  ModifyHttpAuthenticatorResponse,
  DescribeAuthorizationPoliciesResponse,
  CreateTopicRequest,
  DeleteCaCertificateResponse,
  DeleteClientSubscriptionRequest,
  TagFilter,
  DescribeMessageDetailsResponse,
  DescribeUserListResponse,
  DeleteMessageEnrichmentRuleResponse,
  DeactivateDeviceCertificateResponse,
  MQTTUserItem,
  ActivateCaCertificateRequest,
  BodyItem,
  ActivateDeviceCertificateResponse,
  DescribeTopicRequest,
  PublishMessageRequest,
  AuthorizationPolicyItem,
  DescribeClientListRequest,
  DeleteInsPublicEndpointResponse,
  MQTTEndpointItem,
  DeviceIdentityItem,
  DescribeInsVPCEndpointsRequest,
  DescribeTopicListRequest,
  AddClientSubscriptionResponse,
  CreateTopicResponse,
  RevokedDeviceCertificateRequest,
  ModifyInsPublicEndpointResponse,
  CreateInstanceRequest,
  DescribeAuthenticatorRequest,
  RegisterCaCertificateRequest,
  CreateAuthorizationPolicyResponse,
  CreateInsPublicEndpointRequest,
  RegisterDeviceCertificateRequest,
  Filter,
  DeactivateDeviceCertificateRequest,
  DescribeDeviceCertificatesResponse,
  ModifyTopicRequest,
  CreateUserRequest,
  DescribeInstanceResponse,
  ModifyInstanceCertBindingResponse,
  UpdateMessageEnrichmentRulePriorityRequest,
  DescribeInsVPCEndpointsResponse,
  DescribeDeviceCertificateRequest,
  ModifyInsPublicEndpointRequest,
  DeleteInsPublicEndpointRequest,
  DescribeInsPublicEndpointsRequest,
  CreateDeviceIdentityResponse,
  KickOutClientRequest,
  DescribeDeviceIdentityResponse,
  ModifyTopicResponse,
  DeleteClientSubscriptionResponse,
  DescribeCaCertificateRequest,
  DescribeMessageEnrichmentRulesRequest,
  UpdateAuthorizationPolicyPriorityRequest,
  CreateMessageEnrichmentRuleRequest,
  CreateJWTAuthenticatorResponse,
  DeleteAuthorizationPolicyRequest,
  DescribeDeviceIdentityRequest,
  ModifyDeviceIdentityRequest,
  DescribeAuthorizationPoliciesRequest,
  RevokedDeviceCertificateResponse,
  PropagatingProperty,
  CreateHttpAuthenticatorRequest,
  DescribeProductSKUListRequest,
  DescribeSharedSubscriptionLagRequest,
  DescribeDeviceCertificateResponse,
  DescribeInstanceListRequest,
  DeactivateCaCertificateRequest,
  CreateJWTAuthenticatorRequest,
  DescribeCaCertificatesRequest,
  DeviceCertificateItem,
  SubscriptionUserProperty,
  ModifyMessageEnrichmentRuleResponse,
  MQTTClientInfo,
  MQTTTopicItem,
  PriceTag,
  ModifyAuthorizationPolicyRequest,
  DescribeTopicListResponse,
  DeleteTopicResponse,
  ModifyInstanceCertBindingRequest,
  ModifyHttpAuthenticatorRequest,
  DescribeInstanceRequest,
  DescribeCaCertificatesResponse,
  ModifyUserRequest,
  DeleteAuthenticatorResponse,
  DescribeDeviceIdentitiesResponse,
  IpRule,
} from "./mqtt_models"

/**
 * mqtt client
 * @class
 */
export class Client extends AbstractClient {
  constructor(clientConfig: ClientConfig) {
    super("mqtt.tencentcloudapi.com", "2024-05-16", clientConfig)
  }

  /**
   * 创建一机一密设备签名
   */
  async CreateDeviceIdentity(
    req: CreateDeviceIdentityRequest,
    cb?: (error: string, rep: CreateDeviceIdentityResponse) => void
  ): Promise<CreateDeviceIdentityResponse> {
    return this.request("CreateDeviceIdentity", req, cb)
  }

  /**
   * 发布 MQTT 消息到消息主题或客户端
   */
  async PublishMessage(
    req: PublishMessageRequest,
    cb?: (error: string, rep: PublishMessageResponse) => void
  ): Promise<PublishMessageResponse> {
    return this.request("PublishMessage", req, cb)
  }

  /**
   * 查询消息属性增强规则
   */
  async DescribeMessageEnrichmentRules(
    req: DescribeMessageEnrichmentRulesRequest,
    cb?: (error: string, rep: DescribeMessageEnrichmentRulesResponse) => void
  ): Promise<DescribeMessageEnrichmentRulesResponse> {
    return this.request("DescribeMessageEnrichmentRules", req, cb)
  }

  /**
   * 为MQTT实例创建公网接入点，未开启公网的集群可调用。
   */
  async CreateInsPublicEndpoint(
    req: CreateInsPublicEndpointRequest,
    cb?: (error: string, rep: CreateInsPublicEndpointResponse) => void
  ): Promise<CreateInsPublicEndpointResponse> {
    return this.request("CreateInsPublicEndpoint", req, cb)
  }

  /**
   * 修改主题属性
   */
  async ModifyTopic(
    req: ModifyTopicRequest,
    cb?: (error: string, rep: ModifyTopicResponse) => void
  ): Promise<ModifyTopicResponse> {
    return this.request("ModifyTopic", req, cb)
  }

  /**
   * 删除Ca证书
   */
  async DeleteCaCertificate(
    req: DeleteCaCertificateRequest,
    cb?: (error: string, rep: DeleteCaCertificateResponse) => void
  ): Promise<DeleteCaCertificateResponse> {
    return this.request("DeleteCaCertificate", req, cb)
  }

  /**
   * 失效Ca证书
   */
  async DeactivateDeviceCertificate(
    req: DeactivateDeviceCertificateRequest,
    cb?: (error: string, rep: DeactivateDeviceCertificateResponse) => void
  ): Promise<DeactivateDeviceCertificateResponse> {
    return this.request("DeactivateDeviceCertificate", req, cb)
  }

  /**
   * 查询mqtt主题详情
   */
  async DescribeTopic(
    req: DescribeTopicRequest,
    cb?: (error: string, rep: DescribeTopicResponse) => void
  ): Promise<DescribeTopicResponse> {
    return this.request("DescribeTopic", req, cb)
  }

  /**
   * 失效Ca证书
   */
  async DeactivateCaCertificate(
    req: DeactivateCaCertificateRequest,
    cb?: (error: string, rep: DeactivateCaCertificateResponse) => void
  ): Promise<DeactivateCaCertificateResponse> {
    return this.request("DeactivateCaCertificate", req, cb)
  }

  /**
   * 创建一个jwks的认证
   */
  async CreateJWTAuthenticator(
    req: CreateJWTAuthenticatorRequest,
    cb?: (error: string, rep: CreateJWTAuthenticatorResponse) => void
  ): Promise<CreateJWTAuthenticatorResponse> {
    return this.request("CreateJWTAuthenticator", req, cb)
  }

  /**
   * 删除设备证书
   */
  async DeleteDeviceCertificate(
    req: DeleteDeviceCertificateRequest,
    cb?: (error: string, rep: DeleteDeviceCertificateResponse) => void
  ): Promise<DeleteDeviceCertificateResponse> {
    return this.request("DeleteDeviceCertificate", req, cb)
  }

  /**
   * 删除MQTT实例
   */
  async DeleteInstance(
    req: DeleteInstanceRequest,
    cb?: (error: string, rep: DeleteInstanceResponse) => void
  ): Promise<DeleteInstanceResponse> {
    return this.request("DeleteInstance", req, cb)
  }

  /**
   * 根据订阅查询消息
   */
  async DescribeMessageByTopic(
    req: DescribeMessageByTopicRequest,
    cb?: (error: string, rep: DescribeMessageByTopicResponse) => void
  ): Promise<DescribeMessageByTopicResponse> {
    return this.request("DescribeMessageByTopic", req, cb)
  }

  /**
   * 修改MQTT JWKS 认证器
   */
  async ModifyJWTAuthenticator(
    req: ModifyJWTAuthenticatorRequest,
    cb?: (error: string, rep: ModifyJWTAuthenticatorResponse) => void
  ): Promise<ModifyJWTAuthenticatorResponse> {
    return this.request("ModifyJWTAuthenticator", req, cb)
  }

  /**
   * 修改MQTT JWKS 认证器，全量配置修改，需要提交完整的修改后配置。
   */
  async ModifyJWKSAuthenticator(
    req: ModifyJWKSAuthenticatorRequest,
    cb?: (error: string, rep: ModifyJWKSAuthenticatorResponse) => void
  ): Promise<ModifyJWKSAuthenticatorResponse> {
    return this.request("ModifyJWKSAuthenticator", req, cb)
  }

  /**
   * 创建一条消息属性增强规则
   */
  async CreateMessageEnrichmentRule(
    req: CreateMessageEnrichmentRuleRequest,
    cb?: (error: string, rep: CreateMessageEnrichmentRuleResponse) => void
  ): Promise<CreateMessageEnrichmentRuleResponse> {
    return this.request("CreateMessageEnrichmentRule", req, cb)
  }

  /**
   * 查询MQTT实例公网接入点
   */
  async DescribeInsPublicEndpoints(
    req: DescribeInsPublicEndpointsRequest,
    cb?: (error: string, rep: DescribeInsPublicEndpointsResponse) => void
  ): Promise<DescribeInsPublicEndpointsResponse> {
    return this.request("DescribeInsPublicEndpoints", req, cb)
  }

  /**
     * 查询用户列表，Filter参数使用说明如下：

1. Username，用户名称模糊搜索
     */
  async DescribeUserList(
    req: DescribeUserListRequest,
    cb?: (error: string, rep: DescribeUserListResponse) => void
  ): Promise<DescribeUserListResponse> {
    return this.request("DescribeUserList", req, cb)
  }

  /**
   * 更新MQTT实例公网接入点
   */
  async ModifyInsPublicEndpoint(
    req: ModifyInsPublicEndpointRequest,
    cb?: (error: string, rep: ModifyInsPublicEndpointResponse) => void
  ): Promise<ModifyInsPublicEndpointResponse> {
    return this.request("ModifyInsPublicEndpoint", req, cb)
  }

  /**
   * 查询设备证书详情接口
   */
  async DescribeDeviceCertificate(
    req: DescribeDeviceCertificateRequest,
    cb?: (error: string, rep: DescribeDeviceCertificateResponse) => void
  ): Promise<DescribeDeviceCertificateResponse> {
    return this.request("DescribeDeviceCertificate", req, cb)
  }

  /**
   * 注册设备证书（仅一机一证场景生效），可参考 [自定义 X.509 证书实现 “一机一证”](https://cloud.tencent.com/document/product/1778/114817#6cb39d46-efad-4220-8f11-2e7fab207bc8)
   */
  async RegisterDeviceCertificate(
    req: RegisterDeviceCertificateRequest,
    cb?: (error: string, rep: RegisterDeviceCertificateResponse) => void
  ): Promise<RegisterDeviceCertificateResponse> {
    return this.request("RegisterDeviceCertificate", req, cb)
  }

  /**
     * 更新MQTT集群绑定证书
参数传空，则为删除证书
     */
  async ModifyInstanceCertBinding(
    req: ModifyInstanceCertBindingRequest,
    cb?: (error: string, rep: ModifyInstanceCertBindingResponse) => void
  ): Promise<ModifyInstanceCertBindingResponse> {
    return this.request("ModifyInstanceCertBinding", req, cb)
  }

  /**
   * 查询MQTT实例公网接入点
   */
  async DescribeInsVPCEndpoints(
    req: DescribeInsVPCEndpointsRequest,
    cb?: (error: string, rep: DescribeInsVPCEndpointsResponse) => void
  ): Promise<DescribeInsVPCEndpointsResponse> {
    return this.request("DescribeInsVPCEndpoints", req, cb)
  }

  /**
   * 查询 MQTT 客户端详情
   */
  async DescribeClientList(
    req: DescribeClientListRequest,
    cb?: (error: string, rep: DescribeClientListResponse) => void
  ): Promise<DescribeClientListResponse> {
    return this.request("DescribeClientList", req, cb)
  }

  /**
   * 获取产品售卖规格
   */
  async DescribeProductSKUList(
    req?: DescribeProductSKUListRequest,
    cb?: (error: string, rep: DescribeProductSKUListResponse) => void
  ): Promise<DescribeProductSKUListResponse> {
    return this.request("DescribeProductSKUList", req, cb)
  }

  /**
   * 分页查询设备证书
   */
  async DescribeDeviceCertificates(
    req: DescribeDeviceCertificatesRequest,
    cb?: (error: string, rep: DescribeDeviceCertificatesResponse) => void
  ): Promise<DescribeDeviceCertificatesResponse> {
    return this.request("DescribeDeviceCertificates", req, cb)
  }

  /**
   * 查询集群下的ca证书信息
   */
  async DescribeCaCertificates(
    req: DescribeCaCertificatesRequest,
    cb?: (error: string, rep: DescribeCaCertificatesResponse) => void
  ): Promise<DescribeCaCertificatesResponse> {
    return this.request("DescribeCaCertificates", req, cb)
  }

  /**
   * 修改策略规则优先级
   */
  async UpdateAuthorizationPolicyPriority(
    req: UpdateAuthorizationPolicyPriorityRequest,
    cb?: (error: string, rep: UpdateAuthorizationPolicyPriorityResponse) => void
  ): Promise<UpdateAuthorizationPolicyPriorityResponse> {
    return this.request("UpdateAuthorizationPolicyPriority", req, cb)
  }

  /**
   * 删除一机一密设备签名
   */
  async DeleteDeviceIdentity(
    req: DeleteDeviceIdentityRequest,
    cb?: (error: string, rep: DeleteDeviceIdentityResponse) => void
  ): Promise<DeleteDeviceIdentityResponse> {
    return this.request("DeleteDeviceIdentity", req, cb)
  }

  /**
   * 创建主题
   */
  async CreateTopic(
    req: CreateTopicRequest,
    cb?: (error: string, rep: CreateTopicResponse) => void
  ): Promise<CreateTopicResponse> {
    return this.request("CreateTopic", req, cb)
  }

  /**
   * 生效设备证书
   */
  async ActivateDeviceCertificate(
    req: ActivateDeviceCertificateRequest,
    cb?: (error: string, rep: ActivateDeviceCertificateResponse) => void
  ): Promise<ActivateDeviceCertificateResponse> {
    return this.request("ActivateDeviceCertificate", req, cb)
  }

  /**
   * 查询授权规则
   */
  async DescribeAuthorizationPolicies(
    req: DescribeAuthorizationPoliciesRequest,
    cb?: (error: string, rep: DescribeAuthorizationPoliciesResponse) => void
  ): Promise<DescribeAuthorizationPoliciesResponse> {
    return this.request("DescribeAuthorizationPolicies", req, cb)
  }

  /**
     * 获取主题列表，Filter参数使用说明如下：

1. TopicName，主题名称模糊搜索
2. TopicType，主题类型查询，支持多选，可选值：Normal,Order,Transaction,DelayScheduled
     */
  async DescribeTopicList(
    req: DescribeTopicListRequest,
    cb?: (error: string, rep: DescribeTopicListResponse) => void
  ): Promise<DescribeTopicListResponse> {
    return this.request("DescribeTopicList", req, cb)
  }

  /**
   * 删除MQTT实例的公网接入点
   */
  async DeleteInsPublicEndpoint(
    req: DeleteInsPublicEndpointRequest,
    cb?: (error: string, rep: DeleteInsPublicEndpointResponse) => void
  ): Promise<DeleteInsPublicEndpointResponse> {
    return this.request("DeleteInsPublicEndpoint", req, cb)
  }

  /**
   * 购买新的MQTT实例
   */
  async CreateInstance(
    req: CreateInstanceRequest,
    cb?: (error: string, rep: CreateInstanceResponse) => void
  ): Promise<CreateInstanceResponse> {
    return this.request("CreateInstance", req, cb)
  }

  /**
     * 获取实例列表，Filters参数使用说明如下：
1. InstanceName, 名称模糊查询
2. InstanceId，实例ID查询
3. InstanceStatus，实例状态查询，支持多选

当使用TagFilters查询时，Filters参数失效。
     */
  async DescribeInstanceList(
    req: DescribeInstanceListRequest,
    cb?: (error: string, rep: DescribeInstanceListResponse) => void
  ): Promise<DescribeInstanceListResponse> {
    return this.request("DescribeInstanceList", req, cb)
  }

  /**
   * 吊销设备证书
   */
  async RevokedDeviceCertificate(
    req: RevokedDeviceCertificateRequest,
    cb?: (error: string, rep: RevokedDeviceCertificateResponse) => void
  ): Promise<RevokedDeviceCertificateResponse> {
    return this.request("RevokedDeviceCertificate", req, cb)
  }

  /**
   * 查询共享订阅消息堆积量
   */
  async DescribeSharedSubscriptionLag(
    req: DescribeSharedSubscriptionLagRequest,
    cb?: (error: string, rep: DescribeSharedSubscriptionLagResponse) => void
  ): Promise<DescribeSharedSubscriptionLagResponse> {
    return this.request("DescribeSharedSubscriptionLag", req, cb)
  }

  /**
   * 查询实例信息
   */
  async DescribeInstance(
    req: DescribeInstanceRequest,
    cb?: (error: string, rep: DescribeInstanceResponse) => void
  ): Promise<DescribeInstanceResponse> {
    return this.request("DescribeInstance", req, cb)
  }

  /**
   * 查询MQTT消息详情
   */
  async DescribeMessageDetails(
    req: DescribeMessageDetailsRequest,
    cb?: (error: string, rep: DescribeMessageDetailsResponse) => void
  ): Promise<DescribeMessageDetailsResponse> {
    return this.request("DescribeMessageDetails", req, cb)
  }

  /**
   * 查询设备一机一密标识
   */
  async DescribeDeviceIdentity(
    req: DescribeDeviceIdentityRequest,
    cb?: (error: string, rep: DescribeDeviceIdentityResponse) => void
  ): Promise<DescribeDeviceIdentityResponse> {
    return this.request("DescribeDeviceIdentity", req, cb)
  }

  /**
   * 删除MQTT主题
   */
  async DeleteTopic(
    req: DeleteTopicRequest,
    cb?: (error: string, rep: DeleteTopicResponse) => void
  ): Promise<DeleteTopicResponse> {
    return this.request("DeleteTopic", req, cb)
  }

  /**
   * 为MQTT客户端增加一条订阅
   */
  async AddClientSubscription(
    req: AddClientSubscriptionRequest,
    cb?: (error: string, rep: AddClientSubscriptionResponse) => void
  ): Promise<AddClientSubscriptionResponse> {
    return this.request("AddClientSubscription", req, cb)
  }

  /**
   * 查询Ca证书详情接口
   */
  async DescribeCaCertificate(
    req: DescribeCaCertificateRequest,
    cb?: (error: string, rep: DescribeCaCertificateResponse) => void
  ): Promise<DescribeCaCertificateResponse> {
    return this.request("DescribeCaCertificate", req, cb)
  }

  /**
   * 创建一个jwks的认证
   */
  async CreateJWKSAuthenticator(
    req: CreateJWKSAuthenticatorRequest,
    cb?: (error: string, rep: CreateJWKSAuthenticatorResponse) => void
  ): Promise<CreateJWKSAuthenticatorResponse> {
    return this.request("CreateJWKSAuthenticator", req, cb)
  }

  /**
   * 修改MQTT角色
   */
  async ModifyUser(
    req: ModifyUserRequest,
    cb?: (error: string, rep: ModifyUserResponse) => void
  ): Promise<ModifyUserResponse> {
    return this.request("ModifyUser", req, cb)
  }

  /**
   * 删除MQTT访问用户
   */
  async DeleteUser(
    req: DeleteUserRequest,
    cb?: (error: string, rep: DeleteUserResponse) => void
  ): Promise<DeleteUserResponse> {
    return this.request("DeleteUser", req, cb)
  }

  /**
     * 修改消息属性增强规则
注意：需要提交当前规则的所有属性，即使某些字段没有修改。
     */
  async ModifyMessageEnrichmentRule(
    req: ModifyMessageEnrichmentRuleRequest,
    cb?: (error: string, rep: ModifyMessageEnrichmentRuleResponse) => void
  ): Promise<ModifyMessageEnrichmentRuleResponse> {
    return this.request("ModifyMessageEnrichmentRule", req, cb)
  }

  /**
   * 踢出客户端
   */
  async KickOutClient(
    req: KickOutClientRequest,
    cb?: (error: string, rep: KickOutClientResponse) => void
  ): Promise<KickOutClientResponse> {
    return this.request("KickOutClient", req, cb)
  }

  /**
   * 修改消息属性增强规则优先级
   */
  async UpdateMessageEnrichmentRulePriority(
    req: UpdateMessageEnrichmentRulePriorityRequest,
    cb?: (error: string, rep: UpdateMessageEnrichmentRulePriorityResponse) => void
  ): Promise<UpdateMessageEnrichmentRulePriorityResponse> {
    return this.request("UpdateMessageEnrichmentRulePriority", req, cb)
  }

  /**
   * 修改策略规则，可参考 [数据面授权策略说明](https://cloud.tencent.com/document/product/1778/109715)
   */
  async ModifyAuthorizationPolicy(
    req: ModifyAuthorizationPolicyRequest,
    cb?: (error: string, rep: ModifyAuthorizationPolicyResponse) => void
  ): Promise<ModifyAuthorizationPolicyResponse> {
    return this.request("ModifyAuthorizationPolicy", req, cb)
  }

  /**
   * 删除策略规则
   */
  async DeleteAuthorizationPolicy(
    req: DeleteAuthorizationPolicyRequest,
    cb?: (error: string, rep: DeleteAuthorizationPolicyResponse) => void
  ): Promise<DeleteAuthorizationPolicyResponse> {
    return this.request("DeleteAuthorizationPolicy", req, cb)
  }

  /**
   * 修改MQTT HTTP 认证器
   */
  async ModifyHttpAuthenticator(
    req: ModifyHttpAuthenticatorRequest,
    cb?: (error: string, rep: ModifyHttpAuthenticatorResponse) => void
  ): Promise<ModifyHttpAuthenticatorResponse> {
    return this.request("ModifyHttpAuthenticator", req, cb)
  }

  /**
   * 根据认证器类型删除一个MQTT认证器
   */
  async DeleteAuthenticator(
    req: DeleteAuthenticatorRequest,
    cb?: (error: string, rep: DeleteAuthenticatorResponse) => void
  ): Promise<DeleteAuthenticatorResponse> {
    return this.request("DeleteAuthenticator", req, cb)
  }

  /**
   * 注册CA证书（仅一机一证场景支持），可参考 [自定义 X.509 证书实现 “一机一证”](https://cloud.tencent.com/document/product/1778/114817)
   */
  async RegisterCaCertificate(
    req: RegisterCaCertificateRequest,
    cb?: (error: string, rep: RegisterCaCertificateResponse) => void
  ): Promise<RegisterCaCertificateResponse> {
    return this.request("RegisterCaCertificate", req, cb)
  }

  /**
   * 查询MQTT认证器
   */
  async DescribeAuthenticator(
    req: DescribeAuthenticatorRequest,
    cb?: (error: string, rep: DescribeAuthenticatorResponse) => void
  ): Promise<DescribeAuthenticatorResponse> {
    return this.request("DescribeAuthenticator", req, cb)
  }

  /**
   * 修改一机一密设备签名
   */
  async ModifyDeviceIdentity(
    req: ModifyDeviceIdentityRequest,
    cb?: (error: string, rep: ModifyDeviceIdentityResponse) => void
  ): Promise<ModifyDeviceIdentityResponse> {
    return this.request("ModifyDeviceIdentity", req, cb)
  }

  /**
   * 激活Ca证书
   */
  async ActivateCaCertificate(
    req: ActivateCaCertificateRequest,
    cb?: (error: string, rep: ActivateCaCertificateResponse) => void
  ): Promise<ActivateCaCertificateResponse> {
    return this.request("ActivateCaCertificate", req, cb)
  }

  /**
   * 根据一级Topic查询消息列表
   */
  async DescribeMessageList(
    req: DescribeMessageListRequest,
    cb?: (error: string, rep: DescribeMessageListResponse) => void
  ): Promise<DescribeMessageListResponse> {
    return this.request("DescribeMessageList", req, cb)
  }

  /**
   * 添加mqtt角色
   */
  async CreateUser(
    req: CreateUserRequest,
    cb?: (error: string, rep: CreateUserResponse) => void
  ): Promise<CreateUserResponse> {
    return this.request("CreateUser", req, cb)
  }

  /**
   * 删除消息属性增强规则
   */
  async DeleteMessageEnrichmentRule(
    req: DeleteMessageEnrichmentRuleRequest,
    cb?: (error: string, rep: DeleteMessageEnrichmentRuleResponse) => void
  ): Promise<DeleteMessageEnrichmentRuleResponse> {
    return this.request("DeleteMessageEnrichmentRule", req, cb)
  }

  /**
   * 申请ca注册码
   */
  async ApplyRegistrationCode(
    req: ApplyRegistrationCodeRequest,
    cb?: (error: string, rep: ApplyRegistrationCodeResponse) => void
  ): Promise<ApplyRegistrationCodeResponse> {
    return this.request("ApplyRegistrationCode", req, cb)
  }

  /**
   * 查询集群下设备标识列表
   */
  async DescribeDeviceIdentities(
    req: DescribeDeviceIdentitiesRequest,
    cb?: (error: string, rep: DescribeDeviceIdentitiesResponse) => void
  ): Promise<DescribeDeviceIdentitiesResponse> {
    return this.request("DescribeDeviceIdentities", req, cb)
  }

  /**
   * 创建MQTT实例的性能测试任务
   */
  async CreateAuthorizationPolicy(
    req: CreateAuthorizationPolicyRequest,
    cb?: (error: string, rep: CreateAuthorizationPolicyResponse) => void
  ): Promise<CreateAuthorizationPolicyResponse> {
    return this.request("CreateAuthorizationPolicy", req, cb)
  }

  /**
   * 修改实例属性，只有运行中的集群可以调用该接口进行变更配置。
   */
  async ModifyInstance(
    req: ModifyInstanceRequest,
    cb?: (error: string, rep: ModifyInstanceResponse) => void
  ): Promise<ModifyInstanceResponse> {
    return this.request("ModifyInstance", req, cb)
  }

  /**
   * 创建一个HTTP的认证器
   */
  async CreateHttpAuthenticator(
    req: CreateHttpAuthenticatorRequest,
    cb?: (error: string, rep: CreateHttpAuthenticatorResponse) => void
  ): Promise<CreateHttpAuthenticatorResponse> {
    return this.request("CreateHttpAuthenticator", req, cb)
  }

  /**
   * 删除MQTT客户端下的一条订阅
   */
  async DeleteClientSubscription(
    req: DeleteClientSubscriptionRequest,
    cb?: (error: string, rep: DeleteClientSubscriptionResponse) => void
  ): Promise<DeleteClientSubscriptionResponse> {
    return this.request("DeleteClientSubscription", req, cb)
  }
}
